qx.Class.define("caraffa.forms.BuscarTurnoPaciente",
{
	extend : qx.ui.form.ow.FormTab,
	construct : function ()
	{
		this.base(arguments, "id_buscar_turno", "Buscar Turno");
		

		this._txtBuscar = new qx.ui.form.ow.TextField("Datos de busqueda:");
		this._cmbFiltro = new qx.ui.form.ow.ComboBox("Filtro:", [{value:"D", label:"DNI del Paciente"}, {value:"N", label:"Nombre del Paciente"}]);
			this._cmbFiltro.getLabel().setWidth(50);
		
		this._btnMarcarAtendido = new qx.ui.form.Button("Marcar como Atendido");
			
		var modelBusca = new qx.ui.table.model.Simple();
//		modelBusca.setColumns(["cod_turno", "Fecha", "Hora", "Paciente", "Medico", "Motivo", "E"]);
		modelBusca.setColumns(["cod_turno", "Fecha", "Hora", "Clinica", "Paciente", "Medico", "Plan", "Prestacion", "Importe", "E"]);
		modelBusca.setColumnSortable(8, false);
		this._grid = new qx.ui.table.Table(modelBusca);
		
		this._grid.setColumnWidth(1, 80);
		this._grid.setColumnWidth(2, 60);
		this._grid.setColumnWidth(3, 80);
		this._grid.setColumnWidth(4, 170);
		this._grid.setColumnWidth(5, 80);
		this._grid.setColumnWidth(6, 150);
		this._grid.setColumnWidth(7, 200);
		this._grid.setColumnWidth(8, 70);
		this._grid.setColumnWidth(9, 40);
		this._grid.getTableColumnModel().setDataCellRenderer(9, new qx.ui.table.cellrenderer.Image(19, 16));
		
		this._grid.setWidth(950);
		this._grid.setHeight(400);
		this._grid.getTableColumnModel().setColumnVisible(0, false);
		this._grid.setStatusBarVisible(false);
		this._grid.setColumnVisibilityButtonVisible(false);
		this._grid.setShowCellFocusIndicator(true);
		
		
		this.add(this._txtBuscar, {left:10, top:10});
		this.add(this._cmbFiltro, {left:350, top:10});
		this.add(this._btnMarcarAtendido, {left:700, top:10});
		this.add(this._grid, {left:10, top:40});
		
		this._txtBuscar.getText().addListener("input", this._getTurnosFiltrados, this);
		
		this._grid.addListener("dblclick", function (e)
		{
			if ((this._grid.getTableModel().getValue(9, this._grid.getFocusedRow()) != 'caraffa/atendido.png') && (this._grid.getTableModel().getValue(9, this._grid.getFocusedRow()) != 'caraffa/candadoCerrado.png') && (this._grid.getTableModel().getValue(9, this._grid.getFocusedRow()) != 'caraffa/cruz.png'))
			{
				if (this._grid.getTableModel().getValue(0, this._grid.getFocusedRow()))
				{
					var formaPago = new caraffa.widgets.ABMFormaPago(this._grid.getTableModel().getValue(0, this._grid.getFocusedRow()));
					formaPago.addListener("resize", formaPago.center, formaPago);
					formaPago.addListener("close", this._getTurnosFiltrados, this);
					formaPago = null;
				}
			}
			else
			{
				switch (this._grid.getTableModel().getValue(9, this._grid.getFocusedRow()))
				{
					case 'caraffa/atendido.png':
					{
						alert("No puede modificar los datos porque ya fue Atendido el Paciente!");
						break;
					}
					case 'caraffa/candadoCerrado.png':
					{
						alert("No puede modificar los datos porque fue Bloqueado el turno!");
						break;
					}
					case 'caraffa/cruz.png':
					{
						alert("No puede modificar los datos porque fue Cancelado el turno!");
						break;
					}
				}
			}
		}, this);
		
		this._cmbFiltro.addListener("changeValue", this._getTurnosFiltrados, this);
		
		this._btnMarcarAtendido.addListener("execute", this._MarcarAtendido, this);
		
		this._txtBuscar.focus();
	},
	members :
	{
		_getTurnosFiltrados : function ()
		{
			if (this._txtBuscar.getValue().length >= 3)
			{
				var app = this;
				var params = new Object();
				params.buscar = this._txtBuscar.getValue();
				params.filtro = this._cmbFiltro.getValue();
				var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"turnos"});
				rpc.callAsync(function (result, ex, id) {
		        	if (ex == null) {
		        		app._grid.resetSelection();
						app._grid.resetCellFocus();
						app._grid.getTableModel().setData(result);
		        	} else {
		        		alert(ex);
		        	}
	        	},"getTurnosEncontrados", params);
//				try
//				{
//					var params = new Object();
//					params.buscar = this._txtBuscar.getValue();
//					params.filtro = this._cmbFiltro.getValue();
//					var result = rpc.callSync("getTurnosEncontrados", params);
////					alert(qx.util.Json.stringify(result, true));
//					this._grid.resetSelection();
//					this._grid.resetCellFocus();
//					this._grid.getTableModel().setData(result);
//				}
//				catch (ex)
//				{
//					alert(ex);
//				}
			}
			else
			{
				this._grid.getTableModel().setData("");
			}
		},
		_MarcarAtendido : function ()
		{
			if (this._grid.getSelectionModel().getSelectedCount())
			{
				switch (this._grid.getTableModel().getValue(9, this._grid.getFocusedRow()))
				{
					case 'caraffa/atendido.png':
					{
						alert("Este paciente ya se encuentra atendido!");
						break;
					}
					case 'caraffa/candadoCerrado.png':
					{
						alert("No se puede marcar como atendido porque fue Bloqueado el turno!");
						break;
					}
					case 'caraffa/cruz.png':
					{
						alert("No se puede marcar como atendido porque fue Cancelado el turno!");
						break;
					}
					case 'caraffa/nuevo.png':
					{
						alert("No se puede marcar como atendido porque no ingreso todavia la forma de pago!");
						break;
					}
					case 'caraffa/espera.png':
					{
						if (confirm("Esta seguro que desea Marcar como atendido el turno seleccionado?"))
						{
							var rpc = new qx.io.remote.Rpc();
							rpc.setTimeout(10000);
							rpc.setUrl("services/");
							rpc.setServiceName("turnos");
							try
							{
								var params = new Object();
								params.cod_paciente_atendido = "";
								params.cod_turno = this._grid.getTableModel().getValue(0, this._grid.getFocusedRow());
								params.observaciones = "";
								var result = rpc.callSync("guardarMarcar", params);
								this._getTurnosFiltrados();
							}
							catch (ex)
							{
								alert(ex);
							}
						}
						break;
					}
				}
			}
			else
			{
				alert("Debe seleccionar el Turno que desea marcar como Atendido");
			}
		}
	}
});